import request from "@/utils/request"

const DEPT_BASE_URL = "/api/v1/dept"

const DeptAPI = {
  /** 获取部门树形列表 */
  getList(queryParams?: DeptQuery) {
    return request<any, DeptVO[]>({
      url: `${DEPT_BASE_URL}`,
      method: "get",
      params: queryParams,
    })
  },
  /** 获取部门下拉数据源 */
  getOptions() {
    return request<any, OptionType[]>({
      url: `${DEPT_BASE_URL}/options`,
      method: "get",
    })
  },
  /** 获取部门表单数据 */
  getFormData(id: string) {
    return request<any, DeptForm>({
      url: `${DEPT_BASE_URL}/${id}`,
      method: "get",
    })
  },
  /** 新增部门 */
  create(data: DeptForm) {
    return request({
      url: `${DEPT_BASE_URL}`,
      method: "post",
      data,
    })
  },
  /** 修改部门 */
  update(id: string, data: DeptForm) {
    return request({
      url: `${DEPT_BASE_URL}/${id}`,
      method: "put",
      data,
    })
  },
  /** 批量删除部门，多个以英文逗号(,)分割 */
  deleteByIds(ids: string) {
    return request({
      url: `${DEPT_BASE_URL}/${ids}`,
      method: "delete",
    })
  },
}

export default DeptAPI

export interface DeptQuery {
  /** 搜索关键字 */
  keywords?: string
  /** 状态 */
  status?: number
}

export interface DeptVO {
  /** 子部门 */
  children?: DeptVO[]
  /** 创建时间 */
  createTime?: Date
  /** 部门ID */
  id?: string
  /** 部门名称 */
  name?: string
  /** 部门编号 */
  code?: string
  /** 父部门ID */
  parentid?: string
  /** 排序 */
  sort?: number
  /** 状态(1:启用；0:禁用) */
  status?: number
  /** 修改时间 */
  updateTime?: Date
}

export interface DeptForm {
  /** 部门ID(新增不填) */
  id?: string
  /** 部门名称 */
  name?: string
  /** 部门编号 */
  code?: string
  /** 父部门ID */
  parentId: number
  /** 排序 */
  sort?: number
  /** 状态(1:启用；0：禁用) */
  status?: number
}
